Ad Soyad: Zeynep DEMİREL
Öğrenci Numarası: 21040101014
Ders Adı: Veri Madenciliği (FET308)
Öğretim Elemanı: SAJJAD NEMATZADEH MİANDOAB
Üniversite: İstanbul Topkapı Üniversitesi
Fakülte: Mühendislik Fakültesi
Bölüm: Bilgisayar Mühendisliği

Dataset Linki: https://www.kaggle.com/datasets/andrewmvd/heart-failure-clinical-data
Dataset Açıklaması: Kardiyovasküler hastalığı olan veya yüksek kardiyovasküler risk altında olan (hipertansiyon, diyabet, hiperlipidemi veya halihazırda yerleşik hastalık gibi bir veya daha fazla risk faktörünün varlığı nedeniyle) kişilerin erken tespit ve yönetime ihtiyacı vardır; bu durumda bir makine öğrenimi modelinin çok yardımcı olabileceği düşünülmektedir. Bu veri seti, kalp yetmezliği durumlarıyla ilgili klinik ve demografik özellikleri içeren bir veri setidir. Kalp yetmezliği, kalbin yeterince kan pompalayamadığı veya vücudun gereksinimlerini karşılayamadığı bir durumdur. Bu veri seti, hastaların özelliklerini ve takip edildikleri süreyi içerirken, ölüm olayının (DEATH_EVENT) varlığını da belirtir.

In [ ]:
import numpy as np
import pandas as pd
import matplotlib.pyplot as plt
import seaborn as sns
import plotly.express as px
import plotly.graph_objs as go
In [ ]:
df=pd.read_csv("heart_failure_clinical_records_dataset.csv")
In [ ]:
df
Out[ ]:
age anaemia creatinine_phosphokinase diabetes ejection_fraction high_blood_pressure platelets serum_creatinine serum_sodium sex smoking time DEATH_EVENT
0 75.0 0 582 0 20 1 265000.00 1.9 130 1 0 4 1
1 55.0 0 7861 0 38 0 263358.03 1.1 136 1 0 6 1
2 65.0 0 146 0 20 0 162000.00 1.3 129 1 1 7 1
3 50.0 1 111 0 20 0 210000.00 1.9 137 1 0 7 1
4 65.0 1 160 1 20 0 327000.00 2.7 116 0 0 8 1
... ... ... ... ... ... ... ... ... ... ... ... ... ...
294 62.0 0 61 1 38 1 155000.00 1.1 143 1 1 270 0
295 55.0 0 1820 0 38 0 270000.00 1.2 139 0 0 271 0
296 45.0 0 2060 1 60 0 742000.00 0.8 138 0 0 278 0
297 45.0 0 2413 0 38 0 140000.00 1.4 140 1 1 280 0
298 50.0 0 196 0 45 0 395000.00 1.6 136 1 1 285 0

299 rows × 13 columns

Data Analysis

In [ ]:
print("Tablo Bilgisi:")
df.info()
Tablo Bilgisi:
<class 'pandas.core.frame.DataFrame'>
RangeIndex: 299 entries, 0 to 298
Data columns (total 13 columns):
 #   Column                    Non-Null Count  Dtype  
---  ------                    --------------  -----  
 0   age                       299 non-null    float64
 1   anaemia                   299 non-null    int64  
 2   creatinine_phosphokinase  299 non-null    int64  
 3   diabetes                  299 non-null    int64  
 4   ejection_fraction         299 non-null    int64  
 5   high_blood_pressure       299 non-null    int64  
 6   platelets                 299 non-null    float64
 7   serum_creatinine          299 non-null    float64
 8   serum_sodium              299 non-null    int64  
 9   sex                       299 non-null    int64  
 10  smoking                   299 non-null    int64  
 11  time                      299 non-null    int64  
 12  DEATH_EVENT               299 non-null    int64  
dtypes: float64(3), int64(10)
memory usage: 30.5 KB
In [ ]:
print("Tablonun Genel İstatistiği:")
print(df.describe())
Tablonun Genel İstatistiği:
              age     anaemia  creatinine_phosphokinase    diabetes  \
count  299.000000  299.000000                299.000000  299.000000   
mean    60.833893    0.431438                581.839465    0.418060   
std     11.894809    0.496107                970.287881    0.494067   
min     40.000000    0.000000                 23.000000    0.000000   
25%     51.000000    0.000000                116.500000    0.000000   
50%     60.000000    0.000000                250.000000    0.000000   
75%     70.000000    1.000000                582.000000    1.000000   
max     95.000000    1.000000               7861.000000    1.000000   

       ejection_fraction  high_blood_pressure      platelets  \
count         299.000000           299.000000     299.000000   
mean           38.083612             0.351171  263358.029264   
std            11.834841             0.478136   97804.236869   
min            14.000000             0.000000   25100.000000   
25%            30.000000             0.000000  212500.000000   
50%            38.000000             0.000000  262000.000000   
75%            45.000000             1.000000  303500.000000   
max            80.000000             1.000000  850000.000000   

       serum_creatinine  serum_sodium         sex    smoking        time  \
count         299.00000    299.000000  299.000000  299.00000  299.000000   
mean            1.39388    136.625418    0.648829    0.32107  130.260870   
std             1.03451      4.412477    0.478136    0.46767   77.614208   
min             0.50000    113.000000    0.000000    0.00000    4.000000   
25%             0.90000    134.000000    0.000000    0.00000   73.000000   
50%             1.10000    137.000000    1.000000    0.00000  115.000000   
75%             1.40000    140.000000    1.000000    1.00000  203.000000   
max             9.40000    148.000000    1.000000    1.00000  285.000000   

       DEATH_EVENT  
count    299.00000  
mean       0.32107  
std        0.46767  
min        0.00000  
25%        0.00000  
50%        0.00000  
75%        1.00000  
max        1.00000  
In [ ]:
print("Tablonun Satır Sayısı:", df.shape[0])
print("Tablonun Sütun Sayısı:", df.shape[1])
Tablonun Satır Sayısı: 299
Tablonun Sütun Sayısı: 13
In [ ]:
print("Veri Tipleri:")
print(df.dtypes)
Veri Tipleri:
age                         float64
anaemia                       int64
creatinine_phosphokinase      int64
diabetes                      int64
ejection_fraction             int64
high_blood_pressure           int64
platelets                   float64
serum_creatinine            float64
serum_sodium                  int64
sex                           int64
smoking                       int64
time                          int64
DEATH_EVENT                   int64
dtype: object
In [ ]:
min_values = df.min()
print("Minimum Değerler:")
print(min_values)
Minimum Değerler:
age                            40.0
anaemia                         0.0
creatinine_phosphokinase       23.0
diabetes                        0.0
ejection_fraction              14.0
high_blood_pressure             0.0
platelets                   25100.0
serum_creatinine                0.5
serum_sodium                  113.0
sex                             0.0
smoking                         0.0
time                            4.0
DEATH_EVENT                     0.0
dtype: float64
In [ ]:
max_values = df.max()
print("Maximum Değerler:")
print(max_values)
Maximum Değerler:
age                             95.0
anaemia                          1.0
creatinine_phosphokinase      7861.0
diabetes                         1.0
ejection_fraction               80.0
high_blood_pressure              1.0
platelets                   850000.0
serum_creatinine                 9.4
serum_sodium                   148.0
sex                              1.0
smoking                          1.0
time                           285.0
DEATH_EVENT                      1.0
dtype: float64
In [ ]:
avg_values = df.mean()
print("Ortalama Değerler:")
print(avg_values)
Ortalama Değerler:
age                             60.833893
anaemia                          0.431438
creatinine_phosphokinase       581.839465
diabetes                         0.418060
ejection_fraction               38.083612
high_blood_pressure              0.351171
platelets                   263358.029264
serum_creatinine                 1.393880
serum_sodium                   136.625418
sex                              0.648829
smoking                          0.321070
time                           130.260870
DEATH_EVENT                      0.321070
dtype: float64
In [ ]:
std_values = df.std()
print("Standart Sapma Değerleri:")
print(std_values)
Standart Sapma Değerleri:
age                            11.894809
anaemia                         0.496107
creatinine_phosphokinase      970.287881
diabetes                        0.494067
ejection_fraction              11.834841
high_blood_pressure             0.478136
platelets                   97804.236869
serum_creatinine                1.034510
serum_sodium                    4.412477
sex                             0.478136
smoking                         0.467670
time                           77.614208
DEATH_EVENT                     0.467670
dtype: float64
In [ ]:
quartiles = df.quantile([0.25, 0.5, 0.75])
print("Çeyreklikler (25%, 50%, 75%):")
print(quartiles)
Çeyreklikler (25%, 50%, 75%):
       age  anaemia  creatinine_phosphokinase  diabetes  ejection_fraction  \
0.25  51.0      0.0                     116.5       0.0               30.0   
0.50  60.0      0.0                     250.0       0.0               38.0   
0.75  70.0      1.0                     582.0       1.0               45.0   

      high_blood_pressure  platelets  serum_creatinine  serum_sodium  sex  \
0.25                  0.0   212500.0               0.9         134.0  0.0   
0.50                  0.0   262000.0               1.1         137.0  1.0   
0.75                  1.0   303500.0               1.4         140.0  1.0   

      smoking   time  DEATH_EVENT  
0.25      0.0   73.0          0.0  
0.50      0.0  115.0          0.0  
0.75      1.0  203.0          1.0  
In [ ]:
median_values = df.median()
print("Medyan Değerler:")
print(median_values)
Medyan Değerler:
age                             60.0
anaemia                          0.0
creatinine_phosphokinase       250.0
diabetes                         0.0
ejection_fraction               38.0
high_blood_pressure              0.0
platelets                   262000.0
serum_creatinine                 1.1
serum_sodium                   137.0
sex                              1.0
smoking                          0.0
time                           115.0
DEATH_EVENT                      0.0
dtype: float64
In [ ]:
mode_values = df.mode()
print("Mod Değerleri:")
print(mode_values)
Mod Değerleri:
    age  anaemia  creatinine_phosphokinase  diabetes  ejection_fraction  \
0  60.0      0.0                     582.0       0.0               35.0   
1   NaN      NaN                       NaN       NaN                NaN   

   high_blood_pressure  platelets  serum_creatinine  serum_sodium  sex  \
0                  0.0  263358.03               1.0         136.0  1.0   
1                  NaN        NaN               NaN           NaN  NaN   

   smoking  time  DEATH_EVENT  
0      0.0   187          0.0  
1      NaN   250          NaN  
In [ ]:
correlation = df.corr()
print("Korelasyon Matrisi:")
print(correlation)
Korelasyon Matrisi:
                               age   anaemia  creatinine_phosphokinase  \
age                       1.000000  0.088006                 -0.081584   
anaemia                   0.088006  1.000000                 -0.190741   
creatinine_phosphokinase -0.081584 -0.190741                  1.000000   
diabetes                 -0.101012 -0.012729                 -0.009639   
ejection_fraction         0.060098  0.031557                 -0.044080   
high_blood_pressure       0.093289  0.038182                 -0.070590   
platelets                -0.052354 -0.043786                  0.024463   
serum_creatinine          0.159187  0.052174                 -0.016408   
serum_sodium             -0.045966  0.041882                  0.059550   
sex                       0.065430 -0.094769                  0.079791   
smoking                   0.018668 -0.107290                  0.002421   
time                     -0.224068 -0.141414                 -0.009346   
DEATH_EVENT               0.253729  0.066270                  0.062728   

                          diabetes  ejection_fraction  high_blood_pressure  \
age                      -0.101012           0.060098             0.093289   
anaemia                  -0.012729           0.031557             0.038182   
creatinine_phosphokinase -0.009639          -0.044080            -0.070590   
diabetes                  1.000000          -0.004850            -0.012732   
ejection_fraction        -0.004850           1.000000             0.024445   
high_blood_pressure      -0.012732           0.024445             1.000000   
platelets                 0.092193           0.072177             0.049963   
serum_creatinine         -0.046975          -0.011302            -0.004935   
serum_sodium             -0.089551           0.175902             0.037109   
sex                      -0.157730          -0.148386            -0.104615   
smoking                  -0.147173          -0.067315            -0.055711   
time                      0.033726           0.041729            -0.196439   
DEATH_EVENT              -0.001943          -0.268603             0.079351   

                          platelets  serum_creatinine  serum_sodium       sex  \
age                       -0.052354          0.159187     -0.045966  0.065430   
anaemia                   -0.043786          0.052174      0.041882 -0.094769   
creatinine_phosphokinase   0.024463         -0.016408      0.059550  0.079791   
diabetes                   0.092193         -0.046975     -0.089551 -0.157730   
ejection_fraction          0.072177         -0.011302      0.175902 -0.148386   
high_blood_pressure        0.049963         -0.004935      0.037109 -0.104615   
platelets                  1.000000         -0.041198      0.062125 -0.125120   
serum_creatinine          -0.041198          1.000000     -0.189095  0.006970   
serum_sodium               0.062125         -0.189095      1.000000 -0.027566   
sex                       -0.125120          0.006970     -0.027566  1.000000   
smoking                    0.028234         -0.027414      0.004813  0.445892   
time                       0.010514         -0.149315      0.087640 -0.015608   
DEATH_EVENT               -0.049139          0.294278     -0.195204 -0.004316   

                           smoking      time  DEATH_EVENT  
age                       0.018668 -0.224068     0.253729  
anaemia                  -0.107290 -0.141414     0.066270  
creatinine_phosphokinase  0.002421 -0.009346     0.062728  
diabetes                 -0.147173  0.033726    -0.001943  
ejection_fraction        -0.067315  0.041729    -0.268603  
high_blood_pressure      -0.055711 -0.196439     0.079351  
platelets                 0.028234  0.010514    -0.049139  
serum_creatinine         -0.027414 -0.149315     0.294278  
serum_sodium              0.004813  0.087640    -0.195204  
sex                       0.445892 -0.015608    -0.004316  
smoking                   1.000000 -0.022839    -0.012623  
time                     -0.022839  1.000000    -0.526964  
DEATH_EVENT              -0.012623 -0.526964     1.000000  
In [ ]:
variance_values = df.var()
print("Varyans Değerleri:")
print(variance_values)
Varyans Değerleri:
age                         1.414865e+02
anaemia                     2.461224e-01
creatinine_phosphokinase    9.414586e+05
diabetes                    2.441023e-01
ejection_fraction           1.400635e+02
high_blood_pressure         2.286144e-01
platelets                   9.565669e+09
serum_creatinine            1.070211e+00
serum_sodium                1.946996e+01
sex                         2.286144e-01
smoking                     2.187156e-01
time                        6.023965e+03
DEATH_EVENT                 2.187156e-01
dtype: float64
In [ ]:
covariance = df.cov()
print("Kovaryans Matrisi:")
print(covariance)
Kovaryans Matrisi:
                                   age      anaemia  creatinine_phosphokinase  \
age                         141.486483     0.519335             -9.415915e+02   
anaemia                       0.519335     0.246122             -9.181641e+01   
creatinine_phosphokinase   -941.591531   -91.816413              9.414586e+05   
diabetes                     -0.593633    -0.003120             -4.620581e+00   
ejection_fraction             8.460237     0.185282             -5.061745e+02   
high_blood_pressure           0.530565     0.009057             -3.274880e+01   
platelets                -60907.118586 -2124.535856              2.321533e+06   
serum_creatinine              1.958845     0.026777             -1.647038e+01   
serum_sodium                 -2.412544     0.091681              2.549564e+02   
sex                           0.372120    -0.022480              3.701726e+01   
smoking                       0.103847    -0.024893              1.098696e+00   
time                       -206.861351    -5.445142             -7.038036e+02   
DEATH_EVENT                   1.411454     0.015376              2.846447e+01   

                             diabetes  ejection_fraction  high_blood_pressure  \
age                         -0.593633           8.460237             0.530565   
anaemia                     -0.003120           0.185282             0.009057   
creatinine_phosphokinase    -4.620581        -506.174452           -32.748805   
diabetes                     0.244102          -0.028361            -0.003008   
ejection_fraction           -0.028361         140.063455             0.138325   
high_blood_pressure         -0.003008           0.138325             0.228614   
platelets                 4454.928228       83545.241001          2336.480427   
serum_creatinine            -0.024010          -0.138379            -0.002441   
serum_sodium                -0.195226           9.185787             0.078292   
sex                         -0.037261          -0.839667            -0.023916   
smoking                     -0.034006          -0.372573            -0.012458   
time                         1.293259          38.330464            -7.289904   
DEATH_EVENT                 -0.000449          -1.486667             0.017744   

                             platelets  serum_creatinine  serum_sodium  \
age                      -6.090712e+04          1.958845     -2.412544   
anaemia                  -2.124536e+03          0.026777      0.091681   
creatinine_phosphokinase  2.321533e+06        -16.470382    254.956443   
diabetes                  4.454928e+03         -0.024010     -0.195226   
ejection_fraction         8.354524e+04         -0.138379      9.185787   
high_blood_pressure       2.336480e+03         -0.002441      0.078292   
platelets                 9.565669e+09      -4168.399498  26810.436905   
serum_creatinine         -4.168399e+03          1.070211     -0.863173   
serum_sodium              2.681044e+04         -0.863173     19.469956   
sex                      -5.851105e+03          0.003448     -0.058158   
smoking                   1.291448e+03         -0.013263      0.009932   
time                      7.981107e+04        -11.988935     30.014152   
DEATH_EVENT              -2.247619e+03          0.142374     -0.402819   

                                  sex      smoking          time  DEATH_EVENT  
age                          0.372120     0.103847   -206.861351     1.411454  
anaemia                     -0.022480    -0.024893     -5.445142     0.015376  
creatinine_phosphokinase    37.017261     1.098696   -703.803618    28.464468  
diabetes                    -0.037261    -0.034006      1.293259    -0.000449  
ejection_fraction           -0.839667    -0.372573     38.330464    -1.486667  
high_blood_pressure         -0.023916    -0.012458     -7.289904     0.017744  
platelets                -5851.104689  1291.447854  79811.066099 -2247.619159  
serum_creatinine             0.003448    -0.013263    -11.988935     0.142374  
serum_sodium                -0.058158     0.009932     30.014152    -0.402819  
sex                          0.228614     0.099706     -0.579224    -0.000965  
smoking                      0.099706     0.218716     -0.829005    -0.002761  
time                        -0.579224    -0.829005   6023.965276   -19.127663  
DEATH_EVENT                 -0.000965    -0.002761    -19.127663     0.218716  
In [ ]:
numeric_columns = df.select_dtypes(include=['float64', 'int64'])
at_least_3_numeric_columns = numeric_columns.columns[numeric_columns.nunique() >= 3]
selected_columns = numeric_columns[at_least_3_numeric_columns]

# Korelasyon matrisini oluşturma
correlation_matrix = selected_columns.corr()

# Korelasyon matrisini gösterme
print("Korelasyon Matrisi:", correlation_matrix)
Korelasyon Matrisi:                                age  creatinine_phosphokinase  \
age                       1.000000                 -0.081584   
creatinine_phosphokinase -0.081584                  1.000000   
ejection_fraction         0.060098                 -0.044080   
platelets                -0.052354                  0.024463   
serum_creatinine          0.159187                 -0.016408   
serum_sodium             -0.045966                  0.059550   
time                     -0.224068                 -0.009346   

                          ejection_fraction  platelets  serum_creatinine  \
age                                0.060098  -0.052354          0.159187   
creatinine_phosphokinase          -0.044080   0.024463         -0.016408   
ejection_fraction                  1.000000   0.072177         -0.011302   
platelets                          0.072177   1.000000         -0.041198   
serum_creatinine                  -0.011302  -0.041198          1.000000   
serum_sodium                       0.175902   0.062125         -0.189095   
time                               0.041729   0.010514         -0.149315   

                          serum_sodium      time  
age                          -0.045966 -0.224068  
creatinine_phosphokinase      0.059550 -0.009346  
ejection_fraction             0.175902  0.041729  
platelets                     0.062125  0.010514  
serum_creatinine             -0.189095 -0.149315  
serum_sodium                  1.000000  0.087640  
time                          0.087640  1.000000  
In [ ]:
# Veriyi numpy dizisine dönüştürdüm
ejection_fraction = df['ejection_fraction'].to_numpy() 

# Histogramı oluşturdum
count, bins_count = np.histogram(ejection_fraction, bins=10)

pdf = count / sum(count)
cdf = np.cumsum(pdf)

print("Ejeksiyon Fraksiyonu için PDF:", pdf)
print("\nEjeksiyon Fraksiyonu için CDF:", cdf)
Ejeksiyon Fraksiyonu için PDF: [0.07692308 0.12040134 0.11371237 0.42140468 0.06688963 0.07023411
 0.11371237 0.01003344 0.00334448 0.00334448]

Ejeksiyon Fraksiyonu için CDF: [0.07692308 0.19732441 0.31103679 0.73244147 0.7993311  0.86956522
 0.98327759 0.99331104 0.99665552 1.        ]

Visualization

In [ ]:
# Veriyi numpy dizisine dönüştürdüm
ejection_fraction = df['ejection_fraction'].to_numpy()

# Histogramı oluşturdum
count, bins_count = np.histogram(ejection_fraction, bins=10)

pdf = count / sum(count)

# PDF'yi çizdirme
plt.bar(bins_count[1:], pdf, width=np.diff(bins_count), color="blue", alpha=0.7, label="PDF")
plt.legend()
plt.title('Ejeksiyon Fraksiyonu için Olasılık Yoğunluk Fonksiyonu (PDF)')
plt.xlabel("Ejeksiyon Fraksiyonu (yüzde)")
plt.ylabel("Olasılık Yoğunluğu")
plt.show()
No description has been provided for this image
In [ ]:
# Veriyi numpy dizisine dönüştürdüm
ejection_fraction = df['ejection_fraction'].to_numpy()

# Histogramı oluşturdum
count, bins_count = np.histogram(ejection_fraction, bins=10)

cdf = np.cumsum(pdf)

# CDF'yi çizdirme
plt.bar(bins_count[1:], cdf, width=np.diff(bins_count), color="red", alpha=0.7, label="CDF")
plt.legend()
plt.title('Ejeksiyon Fraksiyonu için Birikimli Yoğunluk Fonksiyonu (CDF)')
plt.xlabel("Ejeksiyon Fraksiyonu (yüzde)")
plt.ylabel("Kümülatif Olasılık")
plt.show()
No description has been provided for this image
In [ ]:
# Veriyi numpy dizisine dönüştürdüm
ejection_fraction = df['ejection_fraction'].to_numpy() 

# Histogramı oluşturdum
count, bins_count = np.histogram(ejection_fraction, bins=10)

pdf = count / sum(count)
cdf = np.cumsum(pdf)

plt.plot(bins_count[1:], pdf, color="red", label="PDF")
plt.plot(bins_count[1:], cdf, label="CDF")
plt.legend()
plt.title('Ejeksiyon Fraksiyonu için Olasılık Yoğunluk Fonksiyonu (PDF) ve Birikimli Yoğunluk Fonksiyonu (CDF)')
plt.xlabel("Ejeksiyon Fraksiyonu (yüzde)")
plt.ylabel("Olasılık Yoğunluğu / Kümülatif Olasılık")
plt.show()
No description has been provided for this image
  1. Kod Açıklaması:

     Bu kod, "ejection_fraction" (ejeksiyon fraksiyonu yani her kasılmada kalpten çıkan kanın yüzdesi) sütunundaki veriler üzerinde bir olasılık yoğunluk fonksiyonu (PDF) ve birikimli yoğunluk fonksiyonu (CDF) grafiği oluşturuyor.

    1.1 Veri Hazırlama:

         df['ejection_fraction'].to_numpy() ile "ejection_fraction" sütunundaki veriler bir NumPy dizisine dönüştürülüyor.
         np.histogram() ile veriler belirli bir bin sayısına göre histograma dökülüyor.

    1.2 PDF ve CDF Hesaplama:

         count / sum(count) ile histogramdaki veri sayılarının toplam sayıya oranı alınarak olasılık yoğunluk fonksiyonu (PDF) hesaplanıyor.
         np.cumsum(pdf) ile PDF'deki değerlerin birikimli toplamı alınarak birikimli yoğunluk fonksiyonu (CDF) hesaplanıyor.

    1.3 Grafik Çizimi:

         plt.plot() komutu kullanılarak PDF ve CDF çizimleri yapılıyor.
         "ejection_fraction" değerlerinin histogramını temsil eden PDF kırmızı renkte çiziliyor.
         CDF ise varsayılan renkte çiziliyor.
         plt.legend() ile grafikteki etiketler gösteriliyor.
         Eksen başlıkları ve grafik başlığı belirtiliyor.
  2. Veri Dağılımı Yorumu:

    2.1 PDF Grafiği (Kırmızı):

         Ejeksiyon fraksiyonu değerlerinin belirli aralıklarda yoğunluğunu gösterir. Örneğin, en yüksek olasılık yoğunluğu belirli bir aralıkta yüksekse, bu aralıktaki ejeksiyon fraksiyonu değerlerinin daha yaygın olduğunu gösterir. Ejeksiyon fraksiyonu değerlerinin yoğunluğunun 20 ile 60 arasında olduğunu görebiliriz. Bu aralık, grafikte PDF'nin daha yüksek olduğu bir bölge olarak göze çarpıyor.

    2.2 CDF Grafiği (Mavi):

         Kümülatif olarak, belirli bir değerin altında kalan veri yüzdesini gösterir. Eğri ne kadar dikse, o değere ulaşma olasılığı o kadar yüksektir. Eğri, 0'dan 1'e doğru çıkarken, bu belirli bir değeri geçme olasılığını gösterir. Aynı zamanda bu grafikte CDF'nin sürekli olarak artması, değerlerin dağılımının geniş bir yelpazede olduğunu ve birikimli olasılık açısından homojen bir dağılıma sahip olduğunu gösteriyor.
In [ ]:
fig = px.histogram(df, x="creatinine_phosphokinase", color="DEATH_EVENT", marginal="violin", hover_data=df.columns)
fig.update_layout(title_text="Kreatin Kinaz Değerlerinin Ölüm Olayları ile İlişkisi")
fig.show()
No description has been provided for this image

(Grafik, jupyter dosyasında görüntülenmektedir)
Bu kod, plotly kütüphanesini kullanarak bir histogram grafiği oluşturuyor. Histogram, "creatinine_phosphokinase" sütunundaki verilerin dağılımını gösteriyor. Bu dağılım, "DEATH_EVENT" sütununa göre renklendirilmiş ve kenarlarda birer violin plot (keman grafiği) eklenmiş.

Histogram, "creatinine_phosphokinase" sütunundaki değerlerin frekansını görselleştirir. Y ekseni, bu frekansı temsil ederken, X ekseni ise "creatinine_phosphokinase" sütunundaki değer aralıklarını gösterir. Renkler, "DEATH_EVENT" sütunundaki farklı kategorileri temsil eder ve her bir kategori için histogram dağılımını gösterir.

Aynı zamanda her bir X ekseni değeri için violin plotlar eklenmiş. Violin plotlar, veri dağılımının yoğunluğunu gösterir. Bu plotlar, verinin merkezi eğilimi (genellikle çeyrekliklerle gösterilir) ve verinin dağılımının genişliği hakkında bilgi sağlar.

hover_data=df.columns ifadesi, grafiğin üzerine gelindiğinde görüntülenecek ek veri setini belirtir. Bu durumda, tüm veri setinin sütun başlıklarını gösterir.

Bu grafik, creatinine phosphokinase değerlerinin ölüm olayları ile ilişkisini ve bu değerlerin dağılımını aynı anda göstererek veri setindeki ilişkileri inceleme imkanı sağlar.

In [ ]:
fig = px.histogram(df, x="ejection_fraction", color="DEATH_EVENT", marginal="violin", hover_data=df.columns)
fig.update_layout(title_text="Ejeksiyon Fraksiyon Değerlerinin Ölüm Olayları ile İlişkisi")
fig.show()

(Grafik, jupyter dosyasında görüntülenmektedir)
Bu grafik, ejection fraction değerlerinin ölüm olayları ile ilişkisini ve bu değerlerin dağılımını aynı anda göstererek veri setindeki ilişkileri inceleme imkanı sağlar.

In [ ]:
fig = px.histogram(df, x="platelets", color="DEATH_EVENT", marginal="violin", hover_data=df.columns)
fig.update_layout(title_text="Trombosit Değerlerinin Ölüm Olayları ile İlişkisi")
fig.show()

(Grafik, jupyter dosyasında görüntülenmektedir)
Bu grafik, trombosit değerlerinin ölüm olayları ile ilişkisini ve bu değerlerin dağılımını aynı anda göstererek veri setindeki ilişkileri inceleme imkanı sağlar.

In [ ]:
fig = px.histogram(df, x="serum_creatinine", color="DEATH_EVENT", marginal="violin", hover_data=df.columns)
fig.update_layout(title_text="Serum Kreatinin Değerlerinin Ölüm Olayları ile İlişkisi")
fig.show()

(Grafik, jupyter dosyasında görüntülenmektedir)
Bu grafik, serum kreatinin değerlerinin ölüm olayları ile ilişkisini ve bu değerlerin dağılımını aynı anda göstererek veri setindeki ilişkileri inceleme imkanı sağlar.

In [ ]:
fig = px.histogram(df, x="serum_sodium", color="DEATH_EVENT", marginal="violin", hover_data=df.columns)
fig.update_layout(title_text="Serum Sodyum Değerlerinin Ölüm Olayları ile İlişkisi")
fig.show()

(Grafik, jupyter dosyasında görüntülenmektedir)
Bu grafik, serum sodyum değerlerinin ölüm olayları ile ilişkisini ve bu değerlerin dağılımını aynı anda göstererek veri setindeki ilişkileri inceleme imkanı sağlar.

In [ ]:
plt.figure(figsize=(12, 8))
sns.heatmap(df.corr(), annot=True)
plt.xticks(rotation=90)
plt.title("Korelasyon Isı Haritası")
Out[ ]:
Text(0.5, 1.0, 'Korelasyon Isı Haritası')
No description has been provided for this image

Bu ısı haritası veri setindeki farklı özellikler arasındaki ilişkileri görselleştiriyor. Grafiğin sağ tarafında ve altında renkli bir ölçek bulunuyor. Bu ölçek, korelasyon katsayılarının değerlerini gösterir; daha yüksek pozitif korelasyonlar açık renklerle (genellikle sarıya yakın), daha yüksek negatif korelasyonlar ise daha koyu renklerle (genellikle maviye yakın) temsil edilir.

Özellikler arasındaki güçlü pozitif korelasyonlar daha açık renklerde gösterilirken, negatif korelasyonlar daha koyu renklerde belirtilir. Örneğin, iki özellik arasında negatif bir korelasyon varsa, bu, biri artarken diğerinin azaldığı anlamına gelir.

Grafikteki odak noktası, birbirleriyle güçlü bir şekilde ilişkili olan özelliklerin belirlenmesidir. Özellikler arasındaki yüksek korelasyonlar, analiz edilen veri setindeki değişkenler arasındaki ilişkileri anlamamıza yardımcı olabilir.

In [ ]:
plt.figure(figsize=(15, 20))
for i, col in enumerate(df.columns, 1):
    plt.subplot(5, 3, i)
    plt.title(f"Distribution of {col} Data")
    sns.histplot(df[col], kde=True)
    plt.tight_layout()
plt.show()
No description has been provided for this image

Bu kod, her sütunun dağılımını gösteren 5 satır ve 3 sütunlu bir alt grafik oluşturur. Her alt grafik, veri çerçevesinin bir sütununun histogramını gösterir. Bu şekilde veri setindeki her özellik için dağılım gözlemlenebilir.

In [ ]:
hbp_yes = df[df['high_blood_pressure'] == 1]
hbp_no = df[df['high_blood_pressure'] == 0]

hbp_yes_survi = hbp_yes[hbp_yes["DEATH_EVENT"] == 0].reset_index(drop=True)
hbp_yes_not_survi = hbp_yes[hbp_yes["DEATH_EVENT"] == 1].reset_index(drop=True)
hbp_no_survi = hbp_no[hbp_no["DEATH_EVENT"] == 0].reset_index(drop=True)
hbp_no_not_survi = hbp_no[hbp_no["DEATH_EVENT"] == 1].reset_index(drop=True)

labels = ['HBP Var - Hayatta', 'HBP Var - Hayatta Değil', 'HBP Yok - Hayatta', 'HBP Yok - Hayatta Değil']
values = [
    len(hbp_yes_survi),
    len(hbp_yes_not_survi),
    len(hbp_no_survi),
    len(hbp_no_not_survi)
]

fig = go.Figure(data=[go.Pie(labels=labels, values=values, hole=.4)])
fig.update_layout(title_text="Hayatta Kalma Analizi - HBP (yüksek tansiyon)")
fig.show()

(Grafik, jupyter dosyasında görüntülenmektedir)
Grafik, her durumun veri setinde ne kadarlık bir orana sahip olduğunu görsel olarak sunarak, yüksek tansiyon ve ölüm olayı arasındaki ilişkiyi anlamak için bir araç sağlar. Örneğin, yüksek tansiyonu olanların hayatta kalma oranıyla, olmayanların hayatta kalma oranını karşılaştırabiliriz. Bu, yüksek tansiyonun ölüm oranı üzerindeki olası etkilerini anlamak için faydalı olabilir.

In [ ]:
diabetes_yes = df[df['diabetes'] == 1]
diabetes_no = df[df['diabetes'] == 0]

diabetes_yes_survi = diabetes_yes[diabetes_yes["DEATH_EVENT"] == 0].reset_index(drop=True)
diabetes_yes_not_survi = diabetes_yes[diabetes_yes["DEATH_EVENT"] == 1].reset_index(drop=True)
diabetes_no_survi = diabetes_no[diabetes_no["DEATH_EVENT"] == 0].reset_index(drop=True)
diabetes__no_not_survi = diabetes_no[diabetes_no["DEATH_EVENT"] == 1].reset_index(drop=True)

labels = [
    'Diyabet Var - Hayatta', 
    'Diyabet Var - Hayatta Değil', 
    'Diyabet Yok - Hayatta', 
    'Diyabet Yok - Hayatta Değil'
]

values = [
    len(diabetes_yes_survi),
    len(diabetes_yes_not_survi),
    len(diabetes_no_survi),
    len(diabetes__no_not_survi)
]

fig = go.Figure(data=[go.Pie(labels=labels, values=values, hole=.4)])
fig.update_layout(title_text="Hayatta Kalma Analizi - Diyabet")
fig.show()

(Grafik, jupyter dosyasında görüntülenmektedir)
Grafiğe bakarak, şeker hastalığının hayatta kalma üzerindeki etkisini anlayabiliriz. Örneğin, şeker hastalığı olanların hayatta kalma oranı ile olmayanların hayatta kalma oranını karşılaştırabiliriz. Bu, şeker hastalığının bu veri setindeki ölüm olayları üzerindeki olası etkilerini görmemize yardımcı olabilir.

In [ ]: